pub fn odd_fibnacci_sum(threshold: u32) -> u32 {
  let mut f0 = 0;
  let mut f1 = 1;
  if threshold == 0 {
    0
  } else {
    let mut sum = 1;
    while f0 + f1 <= threshold {
      f0 += f1;
      std::mem::swap(&mut f0, &mut f1);
      if f1 & 1 != 0 {
        sum += f1;
      }
    }
    sum
  }
}
